package com.wxx.完美数;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: Jetwang
 * @date: 2022/4/9 21:56
 * @description: Solution 完美数
 * 于一个 正整数，如果它和除了它自身以外的所有 正因子 之和相等，我们称它为 「完美数」。
 * 给定一个 整数 n， 如果是完美数，返回 true；否则返回 false。
 * @version: 1.0
 */
public class Solution {
    public static boolean checkPerfectNumber(int num) {
        if (num == 1) {
            return false;
        }
        int sum = 1;
        for (int d = 2; d * d <= num; ++d) {
            if (num % d == 0) {
                sum += d;
                // 如果不是 d * d = num 则一次加两个正因子
                if (d * d < num) {
                    sum += num / d;
                }
            }
        }
        return sum == num;
    }

    public static void main(String[] args) {
        boolean res = checkPerfectNumber(99999998);
        System.out.println(res);
    }

}
